package com.tedu.api.thread;

/**
 * 线程：单线程、多线程
 * 单线程：按照顺序执行线程，主方法就是主线程  main
 * 多线程：创建多条线程，做不同的事请
 * 多线程并发创建多条线程”同时“做相同的事情
 *
 * 案例：创建Chef   类   实现Runnable
 *                        私有属性 dishName
 *                        run()功能：{提示语句：开始准备+dishName
 *                        模拟准备时间；阻塞  1~3
 *                        Math.random()随机生成0.0到1.0浮点数值（不包含1.0）
 *                        提示语句：dishName+准备完成
 *                        }
 *         主方法   实现   创建两个线程   两个    chef1    【不需要Lambda】
 *                                           chef2
 */
public class Kitchen {
    public static void main(String[] args) {
        //第一位厨师----西红柿炒鸡蛋
        Thread chef1=new Thread(new chef("西红柿炒鸡蛋"));
        //第二位厨师---糖醋鱼
        Thread chef2=new Thread(new chef("糖醋鱼"));

        chef1.start();
        chef2.start();

    }
}
//创建厨子类
class chef implements Runnable{
    private String dishName;//私有属性：菜肴名
//两厨子创建”同时“完成菜肴制作---构造器：区分厨师制作菜肴
    public chef(String dn){
        this.dishName=dn;//来厨师   this.dishName="西红柿炒鸡蛋"
                         //this 当前对象--Chef

    }


    public void run() {
        System.out.println("开始准备"+dishName);
        //模拟厨师准备时间  ：1~3秒
        //1.Math.random()    获取0.0~1.0范围值【不包括1.0】
        //范围值：0.0~0.9
        //2..Math.random()*3000,得到范围值：0.0~3000.0【不包含3000.0】
        //范围值：0.0~2999.0
        //3.成3000范围，0.0~2999.0  强转long类型     (long)(Math.random()*3000)
        //0~2999---->0~2秒
        //4.加1000(long)(Math.random()*3000)+1000
        //范围值：1~3秒
        try {
            Thread.sleep((long)(Math.random()*3000)+1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(dishName+"准备完成~~~~");
    }
}
